const Koa = require("koa");  //引入koa
const Router = require("koa-router");  //引入路由
const jwt = require("jsonwebtoken");  //签发token
const jwtAuth = require("koa-jwt");   //验证token
const secret = "it's a secret";   //密钥
const app = new Koa();  //实例化
const router = new Router();  //实例化路由

// 登录接口,生成token
router.get("/api/login", async ctx => {
    const { username, password } = ctx.query;
    console.log(username, password);
    if (username == "admin" && password == "123") {
        // 生成令牌
        const token = jwt.sign(
            {
                data: { name: "admin" },// 用户信息数据，可以放任何数据，但不要放密码，因为token是明文可以反向解析，只有最后一部的签名是加密的
                exp: Math.floor(Date.now() / 1000) + 60 * 60  //过期时间这里设了1小时 （3600秒）
            },
            secret
        );
        ctx.body = { code: 1, token };
    } else {
        ctx.status = 401;
        ctx.body = { code: 0, message: "用户名或者密码错误" };
    }
});
//下面接口加了个验证token，jwtAuth({ secret })，如果token过期或者错误，会自动返回401
router.get("/api/userinfo", jwtAuth({ secret }), async ctx => {
    ctx.body = { status: 200, data: { name: "admin", age: 20 } }
})

app.use(router.routes());
app.listen(3000);
